﻿using System;

namespace _7
{
    // 1）定义抽象类Animal
    public abstract class Animal
    {
        // 属性name
        public string Name { get; set; }

        // 相关构造方法
        protected Animal(string name)
        {
            Name = name;
        }

        // 抽象方法enjoy()表示动物高兴时动作
        public abstract void Enjoy();
    }

    // 2）定义Cat类继承于Animal类
    public class Cat : Animal
    {
        // 属性eyesColor
        public string EyesColor { get; set; }

        // 相关构造方法
        public Cat(string name, string eyesColor) : base(name)
        {
            EyesColor = eyesColor;
        }

        // 具体化父类中的抽象方法
        public override void Enjoy()
        {
            Console.WriteLine($"{Name}（{EyesColor}色眼睛的猫）开心地喵喵叫，在地上打滚！");
        }
    }

    // 3）定义Dog类继承于Animal类
    public class Dog : Animal
    {
        // 属性furColor
        public string FurColor { get; set; }

        // 相关构造方法
        public Dog(string name, string furColor) : base(name)
        {
            FurColor = furColor;
        }

        // 具体化父类中的抽象方法
        public override void Enjoy()
        {
            Console.WriteLine($"{Name}（{FurColor}色毛的狗）高兴地汪汪叫，摇着尾巴！");
        }
    }

    // 4）定义Lady类
    public class Lady
    {
        // 属性name
        public string Name { get; set; }

        // Animal类型的属性pet表示女士所养的宠物
        public Animal Pet { get; set; }

        // 构造方法
        public Lady(string name, Animal pet)
        {
            Name = name;
            Pet = pet;
        }

        // 方法：myPetEnjoy表示此女士的宠物在高兴时的动作
        public void MyPetEnjoy()
        {
            Console.Write($"{Name}的宠物");
            Pet.Enjoy();
        }
    }

    // 5）定义测试类
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("=== 宠物高兴时刻 ===\n");

            // 创建一个张女士，养了一只猫
            Cat cat = new Cat("咪咪", "蓝");
            Lady ladyZhang = new Lady("张女士", cat);

            Console.WriteLine("张女士和她的猫：");
            ladyZhang.MyPetEnjoy();

            Console.WriteLine();

            // 创建一个王女士，养了一只狗
            Dog dog = new Dog("旺财", "棕");
            Lady ladyWang = new Lady("王女士", dog);

            Console.WriteLine("王女士和她的狗：");
            ladyWang.MyPetEnjoy();

            //Console.WriteLine("\n=== 测试完成 ===");
            //Console.ReadKey();
        }
    }
}